package com.have.blog.admin.domain.dto;

import com.have.blog.base.dto.BaseDto;
import com.have.blog.base.validator.annotation.IntegerNotNull;
import com.have.blog.base.validator.annotation.NotBlank;
import com.have.blog.base.validator.group.Insert;
import com.have.blog.base.validator.group.Update;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class BlogDto extends BaseDto<BlogDto> {
    /**
     * 博客标题
     */
    @NotBlank(groups = {Insert.class, Update.class})
    private String title;

    /**
     * 博客简介
     */
    private String summary;

    /**
     * 博客内容
     */
    @NotBlank(groups = {Insert.class, Update.class})
    private String content;

    /**
     * 博客分类UID
     */
    @IntegerNotNull(groups = {Insert.class, Update.class})
    private Integer blogCategoryUid;
    /**
     * 标题图片UID
     */
    private Integer coverUid;
    /**
     * 管理员UID
     */
    private Integer adminUid;
    /**
     * 是否发布
     */
    @IntegerNotNull(groups = {Insert.class, Update.class})
    private Integer isPublish;
    /**
     * 是否原创
     */
    @IntegerNotNull(groups = {Insert.class, Update.class})
    private Integer isOriginal;
    /**
     * 如果原创，作者为管理员名
     */
    private String author;
    /**
     * 文章出处
     */
    private String articlesPart;
    /**
     * 推荐级别，用于首页推荐
     * 0：正常
     * 1：一级推荐(轮播图)
     * 2：二级推荐(top)
     * 3：三级推荐 ()
     * 4：四级 推荐 (特别推荐)
     */
    @IntegerNotNull(groups = {Insert.class, Update.class})
    private Integer level;

    /**
     * 类型【0 博客， 1：推广】
     */
    @IntegerNotNull(groups = {Insert.class, Update.class})
    private Integer type;

    /**
     * 外链【如果是推广，那么将跳转到外链】
     */
    private String outsideLink;

    /**
     * 标签,一篇博客对应多个标签
     */
    private List<BlogTagDto> tagList;
    private List<Integer> tagUid;

    // 以下字段不存入数据库，封装为了方便使用
    /**
     * 标题图
     */
    private String photoUrl;
    /**
     * 博客分类
     */
    private BlogCategoryDto blogCategory;
    /**
     * 点赞数
     */
    private Integer praiseCount;
    /**
     * 版权申明
     */
    private String copyright;

    /**
     * 使用Sort字段进行排序 （0：不使用， 1：使用），默认为0
     */

    private Integer useSort;

    /**
     * 排序字段，数值越大，越靠前
     */
    private Integer sort;

    /**
     * 是否开启评论(0:否， 1:是)
     */
    private Integer openComment;

    /**
     * OrderBy排序字段（desc: 降序）
     */
    private String orderByDescColumn;

    /**
     * OrderBy排序字段（asc: 升序）
     */
    private String orderByAscColumn;

}
